#pragma once
#include "Bindable.h"

#include "VertexBuffer.h"
#include "Vertex.h"
class VertexShader;

class InputLayout : public Bindable 
{
public:
	enum Usage
	{
		PER_VERTEX = D3D11_INPUT_PER_VERTEX_DATA,
		PER_INSTANCE = D3D11_INPUT_PER_INSTANCE_DATA
	};
public:
	InputLayout(Graphics&, const VertexShader& vs, Usage usage);
	void Bind(Graphics& gfx) override;
	static std::shared_ptr<InputLayout> Create(Graphics& gfx,const VertexShader& vs, Usage usage);
private:
	Microsoft::WRL::ComPtr<ID3D11InputLayout> inputlayout;
	Usage usage;
};